--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / tests / frontend / ConversationViewerButtons.test.js
Displaying Raw • Download
tests/frontend/ConversationViewerButtons.test.js 417b66d0c8a3b3d18beb97780ee2068916d11dcc (417b66d0) Text, 7.81 KB
Tff7b72import Tb4b4b4{ Te6edf3mount Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3afterEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3ConversationViewer Tff7b72from Ta5d6ff"@/components/messages/ConversationViewer.vue"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"@/js/WebSocketConnection"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"@/js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3GlobalEmitter Tff7b72from Ta5d6ff"@/js/GlobalEmitter"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"@/js/GlobalState"Tb4b4b4;
Tff7b72const Te6edf3RENDER_THRESHOLD_MS Tff7b72= T79c0ff500Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"@/js/DialogUtils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3confirmTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3alertTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"ConversationViewer.vue button interactions"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3axiosMockTb4b4b4;
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3connectTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3axiosMock Tff7b72= Tb4b4b4{
Te6edf3getTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/path"Tb4b4b4)Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3pathTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/stamp-info"Tb4b4b4)Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3stamp_infoTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/signal-metrics"Tb4b4b4)Tb4b4b4) Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3signal_metricsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3postTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tff7b72deleteTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3api Tff7b72= Te6edf3axiosMockTb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinations Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3config Tff7b72= Tb4b4b4{ Te6edf3banished_effect_enabledTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3stubGlobalTb4b4b4(Ta5d6ff"localStorage"Tb4b4b4, Tb4b4b4{
Te6edf3getItemTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3setItemTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3removeItemTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3URLTb4b4b4.Te6edf3createObjectURL Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Ta5d6ff"mock-url"Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3stubGlobalTb4b4b4(
Ta5d6ff"FileReader"Tb4b4b4,
Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3readAsDataURLTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3result Tff7b72= Ta5d6ff"data:image/png;base64,mock"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3onloadTff7b72?Tb4b4b4.Tb4b4b4(Tb4b4b4{ Te6edf3targetTff7b72: Tb4b4b4{ Te6edf3resultTff7b72: Tff7b72thisTb4b4b4.Te6edf3result Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72delete Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4;
Te6edf3viTb4b4b4.Te6edf3unstubAllGlobalsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3mountViewer Tff7b72= Tb4b4b4(Te6edf3overrides Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4=>
Te6edf3mountTb4b4b4(Te6edf3ConversationViewerTb4b4b4, Tb4b4b4{
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3selectedPeerTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"Test Peer" Tb4b4b4}Tb4b4b4,
Te6edf3myLxmfAddressHashTff7b72: Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4,
Te6edf3conversationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Tb4b4b4...Te6edf3overridesTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3mocksTff7b72: Tb4b4b4{ Te6edf3$tTff7b72: Tb4b4b4(Te6edf3keyTb4b4b4) Tb4b4b4=> Te6edf3key Tb4b4b4}Tb4b4b4,
Te6edf3stubsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTff7b72: Tff7b72trueTb4b4b4,
Te6edf3AddImageButtonTff7b72: Tff7b72trueTb4b4b4,
Te6edf3AddAudioButtonTff7b72: Tff7b72trueTb4b4b4,
Te6edf3SendMessageButtonTff7b72: Tff7b72trueTb4b4b4,
Te6edf3ConversationDropDownMenuTff7b72: Tff7b72trueTb4b4b4,
Te6edf3PaperMessageModalTff7b72: Tff7b72trueTb4b4b4,
Te6edf3AudioWaveformPlayerTff7b72: Tff7b72trueTb4b4b4,
Te6edf3LxmfUserIconTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"mounts within render threshold"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3start Tff7b72= Te6edf3performanceTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3elapsed Tff7b72= Te6edf3performanceTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff".flex"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3elapsedTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(Te6edf3RENDER_THRESHOLD_MSTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"banish button calls API when confirmed"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3emitSpy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3GlobalEmitterTb4b4b4, Ta5d6ff"emit"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onBanishHeaderClickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3axiosMockTb4b4b4.Te6edf3postTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(
Ta5d6ff"/api/v1/blocked-destinations"Tb4b4b4,
Te6edf3expectTb4b4b4.Te6edf3objectContainingTb4b4b4(Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4) Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3emitSpyTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Ta5d6ff"block-status-changed"Tb4b4b4)Tb4b4b4;
Te6edf3emitSpyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"banish button hidden when peer is blocked"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinations Tff7b72= Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4) Tb4b4b4}Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3banishBtn Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3findAllTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3bTb4b4b4.Te6edf3attributesTb4b4b4(Ta5d6ff"title"Tb4b4b4)Tff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"banish"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3banishBtnTb4b4b4)Tb4b4b4.Te6edf3toBeUndefinedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"telemetry history modal can be opened"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isTelemetryHistoryModalOpen Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isTelemetryHistoryModalOpenTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"close button emits close"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3closeBtn Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3findAllTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3bTb4b4b4.Te6edf3attributesTb4b4b4(Ta5d6ff"title"Tb4b4b4) Tff7b72=== Ta5d6ff"Close"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3closeBtnTb4b4b4)Tb4b4b4.Te6edf3toBeDefinedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3closeBtnTb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3emittedTb4b4b4(Ta5d6ff"close"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"onMessageContextMenu opens menu and Reply works"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3chatItem Tff7b72= Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72falseTb4b4b4,
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3hashTff7b72: Ta5d6ff"msg-1"Tb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff"Hello"Tb4b4b4,
Te6edf3stateTff7b72: Ta5d6ff"delivered"Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3chatItems Tff7b72= Tb4b4b4[Te6edf3chatItemTb4b4b4]Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3replySpy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4, Ta5d6ff"replyToMessage"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onMessageContextMenuTb4b4b4(Tb4b4b4{ Te6edf3clientXTff7b72: T79c0ff100Tb4b4b4, Te6edf3clientYTff7b72: T79c0ff100 Tb4b4b4}Tb4b4b4, Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3showTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3menuEl Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff".fixed"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3findTb4b4b4(
Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Te6edf3elTb4b4b4.Te6edf3textContentTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Reply"Tb4b4b4) Tff7b72&& Te6edf3elTb4b4b4.Te6edf3textContentTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Delete"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3menuElTb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3replyBtn Tff7b72= Te6edf3menuElTff7b72?Tb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3replyBtnTff7b72?Tb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Reply"Tb4b4b4)Tb4b4b4;
Te6edf3replyBtnTff7b72?Tb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3replySpyTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"message context menu Delete calls deleteChatItem"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3chatItem Tff7b72= Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72falseTb4b4b4,
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"msg-del"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"Hi"Tb4b4b4, Te6edf3stateTff7b72: Ta5d6ff"delivered"Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3chatItems Tff7b72= Tb4b4b4[Te6edf3chatItemTb4b4b4]Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3deleteSpy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4, Ta5d6ff"deleteChatItem"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItem Tff7b72= Te6edf3chatItemTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3menuEl Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff".fixed"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3findTb4b4b4(
Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Te6edf3elTb4b4b4.Te6edf3textContentTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Reply"Tb4b4b4) Tff7b72&& Te6edf3elTb4b4b4.Te6edf3textContentTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Delete"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3deleteBtn Tff7b72= Te6edf3menuEl
Tff7b72? Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3menuElTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3bTb4b4b4.Te6edf3textContentTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Delete"Tb4b4b4)Tb4b4b4)
Tff7b72: Tff7b72nullTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3deleteBtnTb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3deleteBtnTff7b72?Tb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3deleteSpyTb4b4b4)Tb4b4b4.Te6edf3toHaveBeenCalledWithTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"call button exists and onStartCall is callable"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onStartCallTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"function"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3onStartCallTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"share contact button exists and openShareContactModal is callable"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountViewerTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3openShareContactModalTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"function"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3openShareContactModalTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────